package com.quarkus.cloud.controller;

import com.quarkus.cloud.domain.entity.User;
import com.quarkus.cloud.service.UserService;
import io.quarkus.panache.common.Page;
import io.smallrye.mutiny.Uni;
import jakarta.inject.Inject;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;

/**
 * @author zhuhb-a
 */
@Path("/user")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class UserController {
    @Inject
    UserService userService;

    @GET
    @Path("/search/{id}")
    public Uni<User> searchById(@PathParam("id") Long id) {
        return userService.findById(id);
    }

    @GET
    @Path("/page")
    public Page page(@QueryParam("name") String name, @QueryParam("pageNo") Integer pageNo, @QueryParam("pageSize") Integer pageSize) {
        return userService.page(name, pageNo, pageSize);
    }

    @POST
    @Path("/add")
    public Uni<Void> add(User user) {
        return userService.insert(user);
    }

    @DELETE
    @Path("/delete/{id}")
    public Uni<Boolean> delete(@PathParam("id") Long id) {
        return userService.delete(id);
    }

    @PUT
    @Path("/update")
    public Uni<Integer> update(User user) {
        return userService.update(user);
    }
}
